#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 1e8 + 10;
int prime[maxn], cnt; // 记录素数
bitset<maxn>vis; // 标记是否是素数
int n, q;

void ola(){
	for(int i=2;i<=n;i++){
		if(!vis[i]){ // 是素数
			prime[++cnt]=i;
		}
		// 开始删除它的倍数
		for(int j=1;i*prime[j]<=n&&j<=cnt;j++){ // 枚举所有的素数, 这里一定要注意不要越界
			vis[i*prime[j]]=1; // 去掉合数
			
			// 重点 
			if(i%prime[j]==0){ // 防止合数被多次标记
				break; // 确保了合数只能被它最小的质因子标记
			}
		}
	}
}

void solve(){
	cin>>n>>q;
	ola();
	for(int i=1;i<=q;i++){
		int k;
		cin>>k;
		cout<<prime[k]<<'\n';
	}
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
